package ru.mirent.entity.executors;

import lombok.extern.slf4j.Slf4j;
import ru.mirent.entity.listeners.event.SingleNotificationListener;
import ru.mirent.entity.notifications.FixtureNotification;

/**
 * Реализация наблюдателя за одним типов уведомлений с запуском синхронного задания в основного потоке.
 * Запускаемое задание выполняется и занимает текущий поток.
 */
@Slf4j
public class SyncSingleJob extends SingleNotificationListener {

    public SyncSingleJob(Class<? extends FixtureNotification> notification) {
        super(notification);
    }

    @Override
    public void update(Class<? extends FixtureNotification> notification) {
        if (getNotification().equals(notification)) {
            log.info(" [" + notification.getSimpleName() + "] Начал работу: " + notification.getSimpleName());

            try {
                long timeout = 1000L;
                Thread.sleep(timeout);
                log.info("Выполнено ожидание {} мс.", timeout);
            } catch (InterruptedException ignored) {}

            log.info(" [" + notification.getSimpleName() + "] Завершил работу: " + notification.getSimpleName());
        }
    }
}
